ついにTableau ServerがDockerコンテナに対応したので試してみた
大阪オフィスの玉井です。
つ、つ、つ、ついに、Tableau ServerがDcokerで動かせるようになりました。
というわけで、今回はコンテナ版Tableau Serverを立ち上げてみたいと思います。しかし、色々と注意事項や制約事項があるので、検証してみたいという方は、それらを踏まえた上で試しましょう。
概要など
コンテナ版Tableau Serverを立ち上げるまでの流れの概要
めちゃくちゃ簡略化すると下記の通りとなります。
- 公式に対応しているLinuxOS環境を用意する
- 用意したLinuxOS環境で、Tableau製のイメージビルドスクリプト(tableau-server-container-setup-tool)を実行する
- ビルドされたDockerイメージ(=コンテナ版Tableau Server)からDockerコンテナを起動する
- コンテナが起動しているLinuxOS環境(が動いているホストマシン)にWebブラウザからアクセスする
注意事項など
上記の流れを踏まえて、いくつか注意しなければいけないことを先に記載しておきます。
イメージのビルドにはTableau社のスクリプトが必要
Docker Hubにビルド済みイメージが公開されているわけではありません。Tableau Serverのイメージをビルドするためには、Tableauが提供しているオリジナルのスクリプトを実行する必要があります。
Tableau社のスクリプトは特定のLinux環境のみで動作する
Building the Tableau Server in a Container Docker image is only supported on a RHEL-based Linux system (RHEL, CentOS, or Amazon Linux 2). Building on any other Linux distributions including MacOS may be possible but is currently untested and unsupported.
ローカルPC(WindowsやMac)上でのイメージのビルドには未対応です。つまり、イメージをビルドするためには、CentOS等の環境を必ず用意する必要があります。
筆者はMacbookPro(Intel, Big Sur)でスクリプトを動かしてみましたが、正しく動作しませんでした。
TSMは原則コマンドのみ
The TSM Web UI and remote CLI is not accessible by default.
TSMコマンドを用いた各種管理作業は、原則、コンテナの中に入って直接実行する必要があります。理由としては、コンテナ版Tableau Serverを立ち上げるまでの過程で、TSM用のユーザーが作られないからです。
ライセンス認証はオンラインのみ
オフライン認証は不可です。また、強制的にATRを用いた認証になるため、普通のライセンス管理とはちょっと異なる部分が出てきます。
やってみた
公式ドキュメント
環境の用意
マシンの用意
GCPのGCEを使用します。基本的には下記と同じことをします。ただし、OSはCentOS7を選択しました。
今回、このマシンは、イメージのビルドだけでなく、そのままTableau Server(のコンテナ)を動作させるマシンになります。
Dockerのインストール
下記を参考にしました。Dockerのバージョンが古いと、後で実行するスクリプトが動作しないので(普通のyum install docker
でインストールできるものはバージョンが古くてスクリプトが動きませんでした)、なるべく最新のDockerを使用しましょう(20.10.7で問題なく動作しました)。
イメージをビルドする(スクリプトを実行する)
それでは、Tableau Serverのイメージをビルドしていきます。まずはスクリプトをダウンロードします。ちなみに、ダウンロード元ですが、こちらになります(つまり、バージョンによってURLも変わる)。
$ wget https://downloads.tableau.com/esdalt/2021.2.0/tableau-server-container-setup-to ol-2021.2.0.tar.gz
ダウンロードしたtarファイルを解凍します。
$ tar -xzf tableau-server-container-setup-tool-2021.2.0.tar.gz
解凍後のディレクトリに移動し、Tableau Server本体のインストーラーをダウンロードします。
$ cd /tableau-server-container-setup-tool-2021.2.0 $ wget https://downloads.tableau.com/esdalt/2021.2.0/tableau-server-2021-2-0.x86_64.rpm
ディレクトリ内にあるreg-info.json
を開いて、編集します。Tableau Serverをインストールしたことのある方はピンとくると思いますが、Tableau Serverのインストール者に関する情報を事前に入力しておく必要があります。
{ "zip" : "<value>", "country" : "<value>", "city" : "<value>", "last_name" : "<value>", "industry" : "<value>", "eula" : "accept", "title" : "<value>", "phone" : "<value>", "company" : "<value>", "state" : "<value>", "department" : "<value>", "first_name" : "<value>", "email" : "<value>" }
同じ場所で下記のコマンドを実行することで、スクリプトが起動し、Dockerイメージが作られます。
$ ./build-image --accepteula -i tableau-server-2021-2-0.x86_64.rpm
イメージがちゃんと作られているか確認します。
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE tableau_server_image 20212.21.0610.0336 42ef9d48e767 19 seconds ago 6.48GB ...
スクリプトを起動しただけで、イメージが作られたので、ちょっと気持ち悪かったのですが、どうやら、スクリプトの中でdocker build
もしているようです。
イメージからコンテナを作成(起動)する
イメージがビルドできたので、ここからコンテナを起動します。
docker run
するだけではあるのですが、色々とオプションがあります。
docker run \ -e LICENSE_KEY=<Tableau Serverのライセンスキー> \ -e TABLEAU_USERNAME=<初期ログインに使用するユーザーの名前> \ -e TABLEAU_PASSWORD=<初期ログインに使用するユーザーのパスワード> \ -p 8080:8080 -d <イメージのIDかタグ>
上記は公式ドキュメントに案内されているものと同じ内容です(一部日本語にした)。これ以外にもオプションはありますが、今回は上記のコマンドで実行します。
コンテナ版Tableau Serverを確認する
docker run
したときの-p
オプションで指定している通り、ホストマシンのポート8080とコンテナのポート8080をリンクさせているので、Webブラウザからアクセスする時のURLはhttp://<マシンにIPとかホスト名>:8080
になります。マシン側のポートの疎通設定などが問題ないかどうか確認しておきましょう。
Tableau Serverが起動していることを確認できました。
TSMコマンドについて
TSMコマンドについては、コンテナの中に入って行う必要があります。
[tamai_rei@tableau-server-container ~]$ docker exec -i -t <コンテナIDか名前> bash [tableau@xxxxxxxx /]$ tsm version Tableau Services Manager command line version 20212.21.0610.0336. Tableau Server version 20212.21.0610.0336.
未検証なこと
コンテナ系クラウドサービスでの動作
AWS FargateやGoogle Cloud Runなどのサービスで動作させることができたら激アツなのですが、2021年7月現在は、特にドキュメント等で対応に対する言及はされていません。
そもそも、イメージをビルドする工程からして、あまりこういったクラウドサービスへの対応が考慮されていないようにも思えます(Dockerをホストするマシンは自前で用意する前提)。
Kubernetesによるオーケストレーション
下記のようなものがあるのですが、全くの未検証です。
おわりに
「結局マシンは用意せなあかんのかい!」と思ってしまいそうですが、インストール時の作業の簡略さはコンテナ版の方がかなり楽でした。
今回は必要最低限なことしかしていませんが、事前設定等ももっとたくさんあるようなので、本来なら毎回1からセットアップしないといけないTableau Serverを、コンテナとして事前に作っておけば、他環境でのデプロイや、バックアップ等を迅速に行えそうです。